# 创建时间：2025/5/1 星期四 19:59
# 创建人：李德才
def test(arg1, *args):  # *args 表示可变参数， 可以接受0个或者多个参数,  ====> 叫做：个数可变的位置参数
    print("arg1 = ", arg1)
    print("args = ", args)
    print("-----------------------------")


def test2(**args):  # **args 表示关键字参数， 可以接受0个或者多个参数，  ====> 叫做：个数可变的关键字参数
    print("args = ", args)
    print("-----------------------------")


""" 
一个函数既有个数可变的位置参数， 又有个数可变的关键字参数，又有个数可变的关键字参数， 
那么， 个数可变的位置参数必须在个数可变的关键字参数前面
"""


def test3(*args, **kwargs):
    print("-----------------------------")


def test4(*args):
    print("args = ", args)
    print("-----------------------------")


def test5(a, b, c):
    print("a = ", a)
    print("b = ", b)
    print("c = ", c)
    print("-----------------------------")


def test6(a, b, *, c, d):  # * 表示后面的参数必须使用关键字参数传递
    print("a = ", a)
    print("b = ", b)
    print("c = ", c)
    print("d = ", d)
    print("-----------------------------")


test(1)
test(1, 2)
test(1, 2, 3, 4)
test2(arg1=1, arg2=2, arg3=3)

list = [1, 2, 3]
test4(*list)  # *list 表示把 list 中的每个元素作为单独的参数传递给 test4 函数

test5(1, 2, 3)
test5(a=1, b=2, c=3)

dict1 = {"a": 1, "b": 2, "c": 3}
test5(**dict1)  # **dict 表示把 dict 中的每个键值对作为单独的参数传递给 test5 函数

test6(1, 2, c=3, d=4)  # * 表示后面的参数必须使用关键字参数传递
